package com.ts.comm;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;

import java.util.*;

/**
 * JSON操作工具类
 * Created by xhc on 2017-3-23.
 */
public class SysJson {

    /**
     * 把对象转换成Json格式，支持JavaBean、Map、List
     * @param obj
     * @return
     */
    public static String toJson(Object obj){
       return  JSONObject.toJSONString(obj);
    }

    /**
     * 将JSON格式的请求参数转换为Java对象
     * @param str
     * @return
     * @throws JSONException
     */
    public static Object toObj(String str) throws JSONException {
        return JSON.parse(str);
    }

    /**
     * 把json字符串转换为javabean
     * @param text
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T toBean(String text, Class<T> clazz) {
        return JSON.parseObject(text, clazz);
    }
    /** 转换为List*/
    public static <T> List<T> toList(String text, Class<T> clazz) {
        return JSON.parseArray(text, clazz);
    }
    /**
     * json字符串转化为map
     * @param s
     * @return
     */
    public static Map toMap(String s) {
        Map m = JSONObject.parseObject(s);
        return m;
    }

    /**
     * 将json字符串转为hashmap
     * @param s
     * @return
     */
    public static HashMap toHashMap(String s){
        JSONObject formObject = JSON.parseObject(s);
        Set set = formObject.keySet();
        HashMap map = new HashMap();
        for(Object keyObject:set){
            String key = (String)keyObject;
            map.put(key,formObject.get(key));
        }
        return map;
    }

    /**
     * 将json字符串转化为list
     * @param s
     * @return
     */
    public static List toList(String s){
        JSONArray array = JSON.parseArray(s);
        List list = new ArrayList();
        for(Object object:array){
            list.add(object);
        }
        return list;
    }

    public static <T> List<T> toList(JSONArray jsonArray,Class<T> clazz){
        List<T> list = new ArrayList<T>();
        for(Object object :jsonArray){
            T t = (T)object;
            list.add(t);
        }
        return list;
    }
}
